// PROGRAMA : SCRP1430
// SISTEMA : SISP - SISTEMA DE INFORMACOES DE SEGURANCA PUBLICA
// IDENTIFICACAO CRIMINAL
// BIBLIOTECA : SISP
// CLIENTE : GEJUSPC - GERENCIA DE ESTADO DA JUSTICA, SEGURANCA
// PUBLICA E CIDADANIA / INSTITUTO DE IDENT.
// OBJETIVO : INCLUSAO DA FICHA DE INDICE CRMINAL
// PROGRAMADOR: JOSE ANTONIO COELHO
// DATA : 29 DE JULHO DE 1997
// ALTERACAO : 04/11/1999 TELA E DATA (N6) PARA (N8) POR SOLON
package br.com.vti.sisp_sicrim.antigo.controller.programa;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Scrm1430;
import br.com.vti.sisp_sicrim.antigo.model.SicCadastro;
import br.com.vti.sisp_sicrim.antigo.model.SicSenha;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Scrg001;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Scrp1430 OBJETIVO : INCLUSAO DA FICHA DE INDICE CRMINAL *
 * 
 * @author Incode - Data: mai/2014
 * 
 */
@Resource
@Path("/antigo/scrp1430")
public class Scrp1430 {
	// Views utilizadas
	SicCadastro criminalView = new SicCadastro();
	SicSenha senhaView = new SicSenha();
	// Telas/relatorios utilizados
	Scrm1430 scrm1430;
	// Includes utilizados
	// Areas globais / session
	Scrg001 scrg001;
	// Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();
	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	Scrp1430 scrp1430Anterior;
	String faseproc = "0";
	public int jDataIni = 0;
	public int jDataFim = 0;

	private int jMatric = 0;
	private int jQuant = 0;
	private int jIndex = 0;
	private int jI = 0;
	private int jQtAnt = 0;

	private Scrm1430 preMapas() {
		int ind;
		scrm1430 = new Scrm1430(true, sessao);
		for (ind = 1; ind <= 12; ind++) {
			scrm1430.setJmatricula(ind, 0);
			scrm1430.setJdigitador(ind, "");
			scrm1430.setJquantidade(ind, 0);
			scrm1430.setJcolocacao(ind, "");
		}
		scrm1430.setDataCorrente(UtilBean.obtemDataDia());
		// RELATORIO

		return scrm1430;
	}

	public Scrp1430(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Scrm1430 scrm1430, int jDataIni) {
		try {
			main(scrm1430, jDataIni);
		} catch (Exception e) {
			throw new ExceptionProgram(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Scrm1430 pscrm1430, int jDataIni) {
		if (pscrm1430 == null) {
			primeiraVez = true;
			// scrm1430 = new Scrm1430 (primeiraVez);
			scrm1430 = preMapas();
			scrm1430.setNavegar("../scrp1430/executar");
			this.jDataIni = jDataIni;
			sessao.setAtributo("SCRP1430", this);
		} else {
			restaurarEstados(pscrm1430);
		}

		scrm1430.receberTela(false, result);
		// Par�grafo: fd33()
		scrm1430.setJtotal(0);
		while (criminalView.pesquisaDataDocAtuStatusRegDifer(this.jDataIni, 5)) {
			// 164
			// SORT MATFUNC-ATU USING DATDOC-ATU HORA-ATU AT BREAK MATFUNC-ATU
			if (criminalView.quebraMatfuncatu()) {
				jIndex += 1;
				scrm1430.setJmatricula(jIndex, criminalView.getMatriculaFuncAtu());
				// Par�grafo: fd2()
				senhaView.consultaMatricula(criminalView.getMatriculaFuncAtu());
				scrm1430.setJdigitador(jIndex, senhaView.getNome());
				scrm1430.setJquantidade(jIndex, jQuant);
				// scrm1430.setJtotal(scrm1430.getJtotal() + jQuant);
				jQuant = 0;
			}
			jQuant = jQuant + 1;
			scrm1430.setJquantidade(jIndex, jQuant);
			scrm1430.setJtotal(scrm1430.getJtotal() + 1);
			jMatric = criminalView.getMatriculaFuncAtu();
		}
		if (criminalView.registrosProcessados() == 0) {
			Scrp140a scrp140a = new Scrp140a(result, sessao);
			scrp140a.setMensagem("               Nenhuma Ficha Foi Cadastrada Nesse Periodo.");
			scrp140a.executar(null, null, null, null);
			return;
		}
		if (criminalView.fimDados()) {
			jQtAnt = scrm1430.getJquantidade(1);
			scrm1430.setJcolocacao(1, "<=");
			for (jI = 2; jI <= 10; jI++) {
				if (scrm1430.getJquantidade(jI) > jQtAnt) {
					for (int i1 = 1; i1 <= 12; i1++) {
						scrm1430.setJcolocacao(i1, "");
					}

					jQtAnt = scrm1430.getJquantidade(jI);
					scrm1430.setJcolocacao(jI, "<=");
				}
				if (scrm1430.getJquantidade(jI) == jQtAnt) {

					scrm1430.setJcolocacao(jI, "<=");
				}
			}
			scrm1430.setjDataIni(this.jDataIni);
			scrm1430.setjDataFim(this.jDataIni);

			result.include("scrm1430", scrm1430);
			sessao.setAtributo("SCRP1430", this);
			scrm1430.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		}
		Scrp140a scrp140a = new Scrp140a(result, sessao);
		scrp140a.executar(null, null, null, null);
		return;
	}

	private void restaurarEstados(Scrm1430 pscrm1430) {
		this.scrp1430Anterior = (Scrp1430) sessao.getAtributo("SCRP1430");
		if (pscrm1430 != null) {
			scrm1430 = pscrm1430;
		} else {
			scrm1430 = this.scrp1430Anterior.scrm1430;
		}
		scrm1430.setSessao(sessao);
		this.jDataIni = this.scrp1430Anterior.jDataIni;
	}
}
